#include <iostream>
#include <future>
#include <thread>

int Add(int x,int y)
{
    std::cout << "加法" << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(5));
    return x + y;
}

int main()
{
    std::cout << "第1步" << std::endl;
    // std::launch::async 内部会创建工作线程，异步工程线程。
    // std::launch::deferred 在执行get获取一步结果的时候，才会执行一个异步任务。
    std::future<int> result = std::async(std::launch::deferred,&Add,11,13);
    std::cout << "第2步" << std::endl;
    int ret = result.get();
    std::cout << "第3步" << std::endl;
    std::cout << ret << std::endl;

    return 0;
}